<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="dVWYW" id="dVWYW"><span data-lake-id="ud44f94ce" id="ud44f94ce">典型回答</span></h1>
  <p data-lake-id="u083ac5ae" id="u083ac5ae"><br></p>
  <p data-lake-id="ubd68dfa2" id="ubd68dfa2"><span data-lake-id="udb440e06" id="udb440e06">16台4核8G内存的机器，和8台8核16G内存的机器，总资源看上去其实是相等的，但是他们还是有一些区别的，当我们不考虑成本差异的情况下，对于一个Java应用，可以从以下几个方面来考量如何选择。</span></p>
  <p data-lake-id="u15b2bc44" id="u15b2bc44"><span data-lake-id="u74f8276c" id="u74f8276c">​</span><br></p>
  <p data-lake-id="u4ab193a7" id="u4ab193a7"><strong><span data-lake-id="u82d26d66" id="u82d26d66">单机瓶颈</span></strong><span data-lake-id="u81f6aac8" id="u81f6aac8">：有一点是可以肯定的，那就是不同的应用对于CPU和内存的需求一定是不一样的，虽然这两个方案的总资源是一样的，但是单机资源是不一样的，也就说在单机上的处理能力是有瓶颈的。比如虽然16台4C8G的机器，但是每一台他毕竟是4C8G，如果要用到的内存超过8G，或者CPU需求超过4C，那么他就会带来性能瓶颈。</span></p>
  <p data-lake-id="u4c601e05" id="u4c601e05"><span data-lake-id="ucb0cde50" id="ucb0cde50">​</span><br></p>
  <p data-lake-id="u89e3b656" id="u89e3b656"><strong><span data-lake-id="u57279c01" id="u57279c01">容错能力</span></strong><span data-lake-id="u1db60b61" id="u1db60b61">：同时更多的服务器节点也可以提供更高的容错能力。如果一台服务器出现故障，对整体系统的影响会更小。</span></p>
  <p data-lake-id="u3a14035e" id="u3a14035e"><span data-lake-id="u222a6fbd" id="u222a6fbd">​</span><br></p>
  <p data-lake-id="u47d5fc70" id="u47d5fc70"><span data-lake-id="ubfe420ec" id="ubfe420ec">这个尤其是在应用发布过程中就更加明显，当我们采用金丝雀发布进行滚动发布时，重启1/16和重启1/8机器数，对线上业务的影响肯定是不一样的。</span></p>
  <p data-lake-id="u737fd315" id="u737fd315"><br></p>
  <p data-lake-id="u5ed30db4" id="u5ed30db4"><strong><span data-lake-id="u9bab8316" id="u9bab8316">负载均衡</span></strong><span data-lake-id="ua7feaabe" id="ua7feaabe">：而且，更多的服务器意味着负载均衡的发挥空间更大一些，他可以做更平均地分配负载。</span></p>
  <p data-lake-id="uf7013c50" id="uf7013c50"><span data-lake-id="uf2de46c7" id="uf2de46c7">​</span><br></p>
  <p data-lake-id="ud18a2104" id="ud18a2104"><strong><span data-lake-id="u9ab2910a" id="u9ab2910a">连接数瓶颈</span></strong><span data-lake-id="uae03790b" id="uae03790b">：还有，有的时候，资源的瓶颈并不仅仅在机器上，还在于连接数，如应用和数据库的连接数、应用和Redis的连接数等。拿MySQL来说，他给单机分配的连接数是固定的（当然也可以调，但是我司是不让调的，超过了这个数要么就自己扩容， 要么就是存在慢SQL），但是通常意味着，机器数越多，总的可用连接数越多，并发度也就更好。</span></p>
  <p data-lake-id="u9044c877" id="u9044c877"><span data-lake-id="u9fb2c143" id="u9fb2c143">​</span><br></p>
  <p data-lake-id="u4475c5d6" id="u4475c5d6"><strong><span data-lake-id="udc5ed86e" id="udc5ed86e">GC相关</span></strong><span data-lake-id="ub78942bb" id="ub78942bb">：另外，站在内存的角度来看，更大的内存意味着可以给JVM分配的内存也就更多一些，他能放下的对象也就更多，那么他的GC次数可能就会更少。但是同时也意味着GC的时长可能也会更长。对于8G内存，一般我们可以给JVM分配4G，16G内存，一般我们可以给JVM分配8G。虽然4G已经达到了G1的最低标准，但是G1来说8G肯定更优。</span></p>
  <p data-lake-id="u3d0ff83c" id="u3d0ff83c"><br></p>
  <p data-lake-id="u6c7f90f7" id="u6c7f90f7"><strong><span data-lake-id="u1dddc62c" id="u1dddc62c">扩展能力</span></strong><span data-lake-id="ua2fc99ea" id="ua2fc99ea">：当我们需要扩展集群的时候，如果机器本身的内存和CPU更厉害的话，那么可能扩容的机器数就不需要那么多，那么扩展速度可能就会更快一些。</span></p>
  <p data-lake-id="ufe2d8dcc" id="ufe2d8dcc"><br></p>
  <p data-lake-id="u0a3b768c" id="u0a3b768c"><strong><span data-lake-id="uc5a57b4b" id="uc5a57b4b">总体来说，4C8G *16台在并发处理能力、容错能力、负载均衡、连接数瓶颈等方面更加友好，但是需要考虑单机瓶颈及GC次数、以及扩容效率带来的影响。</span></strong></p>
  <p data-lake-id="ucff36407" id="ucff36407"><strong><span data-lake-id="ue81dffe9" id="ue81dffe9">​</span></strong><br></p>
  <p data-lake-id="u09cdbf92" id="u09cdbf92"><span data-lake-id="u03c20507" id="u03c20507">而且，</span><strong><span data-lake-id="u9f93ce52" id="u9f93ce52">用更多小型服务器也更加符合当今的微服务架构的特点</span></strong><span data-lake-id="u717593e1" id="u717593e1">。想想当年阿里的去IOE，其中的I不就是把IBM大型机、小型机替换成PC Server嘛。</span></p>
  <p data-lake-id="u8ca5a799" id="u8ca5a799"><br></p>
  <table data-lake-id="e0OEd" id="e0OEd" margin="true" width-mode="contain" class="lake-table" style="width: 750px">
   <colgroup>
    <col width="250">
    <col width="250">
    <col width="250">
   </colgroup>
   <tbody>
    <tr data-lake-id="u5347f408" id="u5347f408">
     <td data-lake-id="u5d18cb38" id="u5d18cb38"></td>
     <td data-lake-id="u3d1e967f" id="u3d1e967f">
      <p data-lake-id="u4258f5fd" id="u4258f5fd"><strong><span data-lake-id="u445f4623" id="u445f4623">4C8G *16台</span></strong></p></td>
     <td data-lake-id="u8b04b583" id="u8b04b583">
      <p data-lake-id="u6c000d5d" id="u6c000d5d"><strong><span data-lake-id="uf7de0c78" id="uf7de0c78">8C16G*8台</span></strong></p></td>
    </tr>
    <tr data-lake-id="u55a2b6f7" id="u55a2b6f7">
     <td data-lake-id="u7317de5d" id="u7317de5d">
      <p data-lake-id="u65096fa0" id="u65096fa0"><strong><span data-lake-id="ud9fe2f2a" id="ud9fe2f2a">单机瓶颈</span></strong></p></td>
     <td data-lake-id="u8a3ab922" id="u8a3ab922">
      <p data-lake-id="ue871251d" id="ue871251d"><span data-lake-id="u9d89d683" id="u9d89d683">低</span></p></td>
     <td data-lake-id="u22948130" id="u22948130">
      <p data-lake-id="u993e9422" id="u993e9422"><span data-lake-id="u96f66759" id="u96f66759" style="color: #74B602">高</span></p></td>
    </tr>
    <tr data-lake-id="uef480a0c" id="uef480a0c" style="height: 37px">
     <td data-lake-id="uee20234e" id="uee20234e">
      <p data-lake-id="ub2a9a059" id="ub2a9a059"><strong><span data-lake-id="u3d95134d" id="u3d95134d">容错能力</span></strong></p></td>
     <td data-lake-id="u6b02af60" id="u6b02af60">
      <p data-lake-id="u4bf49e92" id="u4bf49e92"><span data-lake-id="u10d7aacf" id="u10d7aacf" style="color: #74B602">更好</span></p></td>
     <td data-lake-id="u0251c112" id="u0251c112">
      <p data-lake-id="u97521b7b" id="u97521b7b"><span data-lake-id="u0c113c19" id="u0c113c19">更差</span></p></td>
    </tr>
    <tr data-lake-id="u7606f456" id="u7606f456" style="height: 37px">
     <td data-lake-id="uf337c21d" id="uf337c21d">
      <p data-lake-id="u7da811ac" id="u7da811ac"><strong><span data-lake-id="u0cf7135d" id="u0cf7135d">负载均衡</span></strong></p></td>
     <td data-lake-id="u5eb49404" id="u5eb49404">
      <p data-lake-id="u047e2a96" id="u047e2a96"><span data-lake-id="u212afc82" id="u212afc82" style="color: #74B602">发挥空间大</span></p></td>
     <td data-lake-id="ufaf7e238" id="ufaf7e238">
      <p data-lake-id="u4aa79c14" id="u4aa79c14"><span data-lake-id="u0ebb3e91" id="u0ebb3e91">发挥空间小</span></p></td>
    </tr>
    <tr data-lake-id="u0fa2adff" id="u0fa2adff" style="height: 37px">
     <td data-lake-id="u37610f2f" id="u37610f2f">
      <p data-lake-id="ub1fd106a" id="ub1fd106a"><strong><span data-lake-id="ua93881da" id="ua93881da">连接数瓶颈</span></strong></p></td>
     <td data-lake-id="uf745ed98" id="uf745ed98">
      <p data-lake-id="u886500b4" id="u886500b4"><span data-lake-id="u798dd0e0" id="u798dd0e0" style="color: #74B602">多</span></p></td>
     <td data-lake-id="u69504086" id="u69504086">
      <p data-lake-id="uee202084" id="uee202084"><span data-lake-id="u907ae38f" id="u907ae38f">少</span></p></td>
    </tr>
    <tr data-lake-id="u9540ef64" id="u9540ef64" style="height: 37px">
     <td data-lake-id="u60354283" id="u60354283">
      <p data-lake-id="u79c98bdb" id="u79c98bdb"><strong><span data-lake-id="u25fd429d" id="u25fd429d">GC时长</span></strong></p></td>
     <td data-lake-id="u7db151f7" id="u7db151f7">
      <p data-lake-id="ua33bb30d" id="ua33bb30d"><span data-lake-id="u4ca0d844" id="u4ca0d844" style="color: #74B602">更短</span></p></td>
     <td data-lake-id="ua342d80a" id="ua342d80a">
      <p data-lake-id="ue466c5d2" id="ue466c5d2"><span data-lake-id="ua6e05a93" id="ua6e05a93">更长</span></p></td>
    </tr>
    <tr data-lake-id="u159dedd0" id="u159dedd0" style="height: 37px">
     <td data-lake-id="u4a244b06" id="u4a244b06">
      <p data-lake-id="u304645bb" id="u304645bb"><strong><span data-lake-id="u0e0fe2fd" id="u0e0fe2fd">G1使用</span></strong></p></td>
     <td data-lake-id="u34606a3a" id="u34606a3a">
      <p data-lake-id="uc6aa2ffb" id="uc6aa2ffb"><span data-lake-id="uc93c7d08" id="uc93c7d08">也能用</span></p></td>
     <td data-lake-id="uf47e7446" id="uf47e7446">
      <p data-lake-id="u1c88d8d5" id="u1c88d8d5"><span data-lake-id="ub72aa8e7" id="ub72aa8e7" style="color: #74B602">适合</span></p></td>
    </tr>
    <tr data-lake-id="ufb8432c4" id="ufb8432c4" style="height: 37px">
     <td data-lake-id="ubf1ad26a" id="ubf1ad26a">
      <p data-lake-id="u1b111877" id="u1b111877"><strong><span data-lake-id="ub96c27e9" id="ub96c27e9">扩展能力</span></strong></p></td>
     <td data-lake-id="u1fb81f40" id="u1fb81f40">
      <p data-lake-id="udf22a1ad" id="udf22a1ad"><span data-lake-id="u499d4fd5" id="u499d4fd5">扩展更慢</span></p></td>
     <td data-lake-id="u6a4345e1" id="u6a4345e1">
      <p data-lake-id="u62d04264" id="u62d04264"><span data-lake-id="u48039d17" id="u48039d17" style="color: #74B602">扩展更快</span></p></td>
    </tr>
   </tbody>
  </table>
  <p data-lake-id="ub42aa01a" id="ub42aa01a"><br></p>
  <p data-lake-id="udd1988d2" id="udd1988d2"><span data-lake-id="uca3423c2" id="uca3423c2" style="color: #F38F39">所以，如果不是特别的"微"服务，那么意味着他可能需要的内存和CPU资源更多，那么可以考虑用配置更高的。</span></p>
  <p data-lake-id="uaeaee336" id="uaeaee336"><span data-lake-id="u24f60f19" id="u24f60f19" style="color: #F38F39">​</span><br></p>
  <p data-lake-id="uc07ba0bd" id="uc07ba0bd"><span data-lake-id="ude83a54b" id="ude83a54b" style="color: #F38F39">而如果服务拆分的比较细，每个应用的职责比较清晰，简单，那么他对负载均衡，容错能力的要求就更高，考虑用更多的机器。</span></p>
 </body>
</html>